css: Don't query type for regions
authorBenjamin Otte <otte@redhat.com>
Mon, 16 May 2011 02:31:07 +0000 (04:31 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 18 May 2011 20:17:57 +0000 (22:17 +0200)
Regions are regions and don't match by type.

gtk/gtkcssselector.c

index 799f3a074557d7b2b90238e2c1782a55f7f1e88a..3850a9eaf472b46582dfe1ca4f5280369ba9a24f 100644 (file)
@@ -21,6 +21,8 @@
 
 #include "gtkcssselectorprivate.h"
 
+#include "gtkstylecontextprivate.h"
+
 struct _GtkCssSelector
 {
   GtkCssSelector *  previous;        /* link to next element in selector or NULL if last */
@@ -48,7 +50,7 @@ _gtk_css_selector_new (GtkCssSelector         *previous,
   selector->previous = previous;
   selector->combine = combine;
   selector->name = name ? g_quark_to_string (g_quark_from_string (name)) : NULL;
-  selector->type = G_TYPE_INVALID;
+  selector->type = !name || _gtk_style_context_check_region_name (name) ? G_TYPE_NONE : G_TYPE_INVALID;
   selector->ids = ids;
   selector->classes = classes;
   selector->pseudo_classes = pseudo_classes;
@@ -190,6 +192,9 @@ gtk_css_selector_matches_type (const GtkCssSelector      *selector,
   if (selector->pseudo_classes)
     return FALSE;
 
+  if (selector->type == G_TYPE_NONE)
+    return FALSE;
+
   /* ugh, assigning to a const variable */
   if (selector->type == G_TYPE_INVALID)
     ((GtkCssSelector *) selector)->type = g_type_from_name (selector->name);